package com.capgemini.fs.app.ekms.persistence.dao;

import java.util.Date;
import java.util.List;

import com.capgemini.fs.app.ekms.model.Role;
import com.capgemini.fs.app.ekms.model.User;

public interface UserDAO extends BaseDAO<User> {
	public void addUser(User user);

	public User getUserByName(String name);

	public void addRoleToUser(User user, Role role);


	List<User> queryUser(final String firstName, final String lastName,
			final String userName, final Integer status);

	List<User> queryUser(final String firstName, final String lastName,
			final String userName, final Integer status, final String email,
			final String phoneNumber, final Integer memberType,
			final List<String> roles, final List<String> groups);

	List<User> queryUser(final String userName, final String grade,
			final String groupName, final Integer yearOfExperience,
			final Date fromDate, final Date toDate, final Integer memberType);

	List<User> queryUser(final String firstName, final String lastName,
			final String userName, final Integer status,
			final Integer memberType, final String managerName);

	List<User> queryUser(final String userName, final String firstName,
			final String lastName, final String grade, final String groupName,
			final Integer yearOfExperience, final Date fromDate,
			final Date toDate, final Integer memberType, final Integer status,
			final String managerName);

	List<User> queryUser(final String userName, final String firstName,
			final String lastName, final String grade, final String groupName,
			final Integer yearOfExperience, final Date fromDate,
			final Date toDate, final Integer memberType, final Integer status,
			final String managerName, final String roleName);

}
